Many computer systems utilize graphical user interfaces (GUIs) to permit user interaction with data stored in such systems. In a GUI environment, users are typically able to interact with a computer system through intuitive operations such as "pointing and clicking" on graphical user interface components displayed on a computer display with a graphical pointer controlled by a mouse or other user interface device.
Data is often presented to a user in a GUI environment using a graphical user interface component known as a window. A computer application may use one or more windows, and moreover, multiple computer applications may operate at the same time in a computer system, resulting in multiple windows being displayed at once on a computer display.
Due to limited space on a computer display, windows are typically arranged in layers, giving the visual impression that a window displayed in a relatively higher layer overlaps a window displayed in a relatively lower layer. The window displayed at the top layer is also often referred to as being in the "foreground", while windows that are displayed in layers other than the top layer are referred to being in the "background".
A window assigned to the foreground is also often referred to as being in "focus", as the computer application associated with the window typically interacts with a user by processing the non-pointer input received from a user (e.g., from a keyboard). When a user wishes to interact with a window other than the current "in-focus" window, the user must bring that window into focus, typically by "pointing and clicking" on that window while the pointer is located over the window. In response to such an operation, the clicked-on window is assigned to the top layer to become the new "in-focus" window, while the previous in-focus window is assigned to a relatively lower layer. Put another way, the clicked-on window is often said to be "promoted" to the foreground, with the previous in-focus window "demoted" to the background.
In many computer systems, an automatic in-focus window switch feature is provided to permit windows to be automatically brought into focus immediately whenever the pointer is moved over such windows by a user. Thus, whenever a pointer moves from the display region for the current in-focus window to the display region of another window, that other window is promoted to the foreground to become the new in-focus window.
Automatic in-focus window switching often improves user productivity when working with multiple windows since a user need not perform the separate action of depressing a button to bring a window into focus. However, eliminating the need to depress a button increases the risk that a user will inadvertently switch to another window. As one example, many windows are implemented with controls such as buttons, resizing handles, and/or scroll bars that are located along the outer boundaries of the windows. Performing operations with such controls requires that the pointer be moved by a user close to the boundary of the display region of a window. Should the user accidently move the pointer beyond the boundary of an in-focus window and over the display region of another window when attempting to operate a control, the other window is automatically selected, resulting in the original in-focus window being demoted to the background.
In many circumstances, inadvertent switching to another window can significantly impact user productivity. A noticeable amount of processing by a computer system is often required to promote a particular window to the foreground, often resulting in a delay of as much as one or more seconds before the operation is complete. As a result, inadvertently switching to another window and then attempting to switch back to the original in-focus window may lead to a substantial user delay.
In addition, inadvertently switching to another window may result in the original in-focus window being completely occluded by the new in-focus window--with all traces of the original window completely removed from the display. As a result, even more productivity is lost since a user often must perform more user-intensive operations to bring the original window back into focus--e.g., closing, moving, resizing or minimizing the new in-focus window, toggling between tasks, etc.
Consequently, while in-focus window switching can provide productivity gains when interacting with windows in a graphical user interface environment, the adverse impact of inadvertent switching between user interface components such as windows can often negate these potential gains for many users. Therefore, a significant need exists for a manner of improving in-focus switching operations to minimize inadvertent switching.